Comparación de los modelos

Este notebook queda dividido en tres secciones:

  1. Eliminación de modelos que con overfitting
  2. Test estadísticos sobre los errores cometidos en los pliegues de la validación cruzada (80% de los datos)
  3. Algoritmo de Decisión Multicriterio sobre los errores cometidos en las predicciones (20% de los datos)

Eliminación de modelos con overfitting

En esta primera sección visualizamos de forma gráfica y numérica los errores cometidos en las predicciones tanto en training (en cada uno de los pliegues) como en test en la predicción t. De esta forma podremos apoyarnos en los resultados para detectar modelos que pueden estar haciendo overfitting.

RMSE

Lectura de los datos y descripción estadística

Resumen con los datos estadísticos más importantes de la tabla de RMSE sobre los diez pliegues

Diagrama de cajas interactivo para la tabla RMSE

Media y desviación típica del error para cada uno de los modelos.

MAE

Lectura de los datos y descripción estadística

CC

Lectura de los datos y descripción estadística

Gráficas Train VS Test y errores generados

Como hemos comentado, nos apoyaremos en las gráficas y en aquellos modelos para los que haya una diferencia de 0'20 o más entre las predicciones de train y test, que consideraremos que están haciendo overfitting.

Cargamos una lista con todos los modelos entrenados para poder iterar después sobre ella.

La siguiente función calcula las predicciones en el instante t sobre el conjunto de train y el conjunto de test, para cada uno de los modelos. De esta forma, generaremos para cada modelo dos gráficas unidas. La de la izquierda contendrá los datos reales de train junto con la predicción y la de la derecha contendrá los datos reales de test junto con la predicción. Además calcula el MAE y el RMSE generado por las predicciones, tanto para train como para test.

A simple vista, parece que hay dos modelos que están sobre entrenando, en ambos casos de lag. Estos son Random Forest y Gradient Boosting Regressor (GBR). Veamos numéricamente la diferencia entre los errores. Aquellos cuya diferencia sea de un valor mayor o igual que 0'20 consideraremos que están sobreentrenando.

Mostramos las diferencias entre los errores, para MAE y para RMSE.

Aunque podemos ver como en MAE las diferencias no parecen muy significativas, si que lo hacen en el caso del RMSE. Además, como podríamos esperar, estos modelos coinciden con los detectados en las gráficas.

Errores en las predicciones sobre los datos de test

Cargamos las tablas con los errores cometidos en las predicciones de test que generamos en el notebook anterior. Estas tablas contenían ocho errores para cada modelo, correspondientes con las predicciones t+i para i = 0,...,7.

Mostramos la evolución del error a lo largo de las predicciones de forma gráfica. Cabe destacar que mientras que la tendencia de RMSE y MAE es creciente, pues los errores se van acumulando, al contrario pasa con el CC, es decreciente. Por el mismo razonamiento, los errores van generando menos correlación a lo largo de las predicciones.

Mostramos las tablas de errores RMSE, MAE y CC.

Añadimos las funciones de cálculo de las predicciones en los pasos adelante, tanto para el caso de lag 3 como para el caso de lag 5.

Esta función calcula las predicciones sobre el conjunto de test de los datos y las visualiza. Lo haremos para todos los modelos.

Eliminación de modelos con overfitting

Detectamos los modelos que han hecho overfitting y los eliminamos

Análisis estadístico

Aplicamos los análisis estadísticos sobre las tres métricas consideradas (RMSE, MAE y CC), para ver si se encuentran diferencias significativas entre los modelos que no sufren overfitting (los que acabamos de descartar).

RMSE

Aplicamos el test de Shapiro Wilk, la hipóstesis nula es H0: los datos siguen una distribución normal

Como todos los p-valores > 0.05, al 95% de confianza podemos decir que siguen una distribución normal. Lo vemos gráficamente

Aplicamos el test de Mauchly para comprobar la esfericidad

El test de Mauchly puede no funcionar en Python. Se aplica de nuevo sobre los datos en R y se obtiene un p-valor inferior a 0.05 así que con un 95% de confianza rechazamos la hipótesis nula de que se cumple la esfericidad de la matriz de covarianzas. Debemos de seguir entonces con el test de Friedman y si éste detecta diferencias significativas, con el de Nemenyi

Podemos afirmar al 95% de confianza que existen diferencias significativas entre los modelos, aplicamos el test de Nemenyi

El test de Nemenyi no detecta ninguna diferencia significativa. Podemos verlo al ser todas las celdas mayores que 0.05

MAE

Seguiremos el mismo procedimiento que con RMSE

De nuevo detecta que siguen todos una distribución normal

De nuevo aplicamos el test de Mauchly para comprobar la esfericidad de la matriz de covarianzas

Igual que con RMSE, probamos en R y el p-valor es inferior al valor de significancia, con lo que rechazamos la hipótesis nula

De nuevo, un p-valor por debajo del nivel de significancia permite afirmar al 95% de confianza que existen diferencias significativas entre los modelos. Veamos si las detecta Nemenyi

Según el test de Nemenyi, existen diferencias significativas en un par de modelos, Elastic_Net_Lag5 y SVR_Lag_3

CC

De nuevo, los modelos siguen una distribución normal

Veamos si el test de Friedman de Chi Square indica que hay diferencias significativas

El p-valor > 0.05 así que aceptamos H0: no existen diferencias significativas

Algoritmo de Decisión Multicriterio

Los test estadísticos no son concluyentes, pues aunque si apuntan a que existen algunas diferencias entre ciertos pares de modelos, no son detectables. Por ello, aplicamos el algoritmo de decisión multicriterio sobre los datos de test.

Transformamos las tablas, creando un dataframe para cada modelo donde se incluyan las tres métricas. Transformamos el valor del CC, puesto que para aplicar el algoritmo se sigue un proceso de minimización y el CC cuanto más alto, mejor.

Mostramos a continuación las gráficas de los modelos que muestran la evolución de RMSE, MAE y CC a lo largo de las predicciones.

Para trabajar con el algoritmo de decisión multicriterio necesitamos normalizar los datos, que es lo que hacemos a continuación.

Mostramos los resultados obtenidos en cada modelo.

Nos quedamos con el mínimo de los valores obtenidos, este será nuestro mejor modelo.